"""
使用udp完成:
客户端不断发送学生信息
	服务器将学生信息写入到一个文件中,每个学生信息占一行
"""
from socket import *
from struct import *

# 定义数据格式
st = Struct("i32sif")

sockfd = socket(AF_INET, SOCK_DGRAM)
sockfd.bind(("127.0.0.1", 18693))

def file_read(data):
	"""写入文件"""
	f = open("./学生信息.txt", 'a+')
	f.write(data)
	f.flush()
	print("OK!")

def jie_bao(data):
	"""
		解包文件
	"""
	strc = st.unpack(data)
	so = strc[0]
	so1 = strc[1]
	so2 = strc[2]
	so3 = strc[3]
	ld = str(so1.decode()).split('\x00')[0]  # 转码 + 截取空格 = 想要的字符串
	cc = f"{so}, {ld}, {so2}, {so3}\n"
	# cc = "%d %-10 %d %.1f\n"% (strc)
	print(cc)
	return cc
    


while True:
	data, addr = sockfd.recvfrom(1024)  # 接收
	print(f"与客户端链接成功: {addr}")
	# print(f"客户端:{data.decode()}")
	if not data:
		break
	so = jie_bao(data) # 解包
	file_read(so) # 写入
	sockfd.sendto("ok".encode(), addr)  # 发送

sockfd.close()